package com.yuexunit.finance.member.action.v1;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.member.action.v1.model.AbnormalDetailResult;
import com.yuexunit.finance.member.action.v1.model.AssociatedPerson;
import com.yuexunit.finance.member.action.v1.model.AuctionDetailResult;
import com.yuexunit.finance.member.action.v1.model.BusinessInfoDetailResult;
import com.yuexunit.finance.member.action.v1.model.CommissionScaleTable;
import com.yuexunit.finance.member.action.v1.model.CourtNoticeDetailResult;
import com.yuexunit.finance.member.action.v1.model.EnterpriseAddressInfo;
import com.yuexunit.finance.member.action.v1.model.EnterpriseBaseDetail;
import com.yuexunit.finance.member.action.v1.model.EnterpriseBaseInfo;
import com.yuexunit.finance.member.action.v1.model.EnterpriseDetail;
import com.yuexunit.finance.member.action.v1.model.EnterpriseGradeEvaluation;
import com.yuexunit.finance.member.action.v1.model.EnterpriseGradeEvaluationDetail;
import com.yuexunit.finance.member.action.v1.model.EnterpriseInfo;
import com.yuexunit.finance.member.action.v1.model.EnterpriseLawsuitInfoDetailResult;
import com.yuexunit.finance.member.action.v1.model.EnterpriseNoticeDetailResult;
import com.yuexunit.finance.member.action.v1.model.EquityQualitiesDetailResult;
import com.yuexunit.finance.member.action.v1.model.ExecutedPersonDetailResult;
import com.yuexunit.finance.member.action.v1.model.ExecutionDetailResult;
import com.yuexunit.finance.member.action.v1.model.FinanceBulkstockPledgeRateDetail;
import com.yuexunit.finance.member.action.v1.model.FinanceFollowPersonDetail;
import com.yuexunit.finance.member.action.v1.model.MortgagesDetailResult;
import com.yuexunit.finance.member.action.v1.model.OverDueTaxDetailResult;
import com.yuexunit.finance.member.action.v1.model.SupplierInfo;
import com.yuexunit.finance.member.action.v1.model.TemporaryCreditlineEvaluation;
import com.yuexunit.finance.member.action.v1.model.TemporaryCreditlineEvaluationDetail;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/**
 * Created by HuangYH on 2015/9/24.
 */
public interface EnterpriseActionApi {
	@Permission
	@Action(version = FinVersion1.class, description = "新增分销商")
	@Parameter(name = "enterpriseId", description = "企业信息ID")
	public String createDistributor(
			@Parameter(name = "enterpriseName", description = "企业名称") String enterpriseName,
			@Parameter(name = "legalPerson", description = "法人姓名") String legalPerson,
			@Parameter(name = "mobile", description = "手机") String mobile,
			@Parameter(name = "password", description = "密码") String password,
			@Parameter(name = "creditLine", description = "授信额度") BigDecimal creditLine,
			@Parameter(name = "province", description = "省") String province,
			@Parameter(name = "city", description = "市") String city,
			@Parameter(name = "district", description = "区/县") String district,
			@Parameter(name = "employeeId", description = "员工ID") Long employeeId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "注册企业资质-CRM")
	@Parameter(name = "enterpriseId", description = "企业信息ID")
	public String registerEnterprise(EnterpriseBaseInfo enterpriseBaseInfo);
	
	@Permission
	@Action(version=FinVersion1.class, description="同步企业信息到仓储系统")
	public void syncCustInfo(
			@Parameter(name="enterpriseId", description="企业ID") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "增补企业证照-CRM")
	public void supplementRegisterEnterpriseImage(
			@Parameter(name = "enterpriseId", description = "企业信息ID") Long enterpriseId,
			@Parameter(name = "businessLicenceImage", description = "营业执照图片") String businessLicenceImage,
			@Parameter(name = "certificateImage", description = "组织机构代码图片") String certificateImage,
			@Parameter(name = "legalPersonFrontImage", description = "法人代表正面照") String legalPersonFrontImage,
			@Parameter(name = "legalPersonBackImage", description = "法人代表反面照") String legalPersonBackImage,
			@Parameter(name = "qualificationsImage", description = "公司资质图片", nullable = true) String qualificationsImage,
			@Parameter(name = "creditReportImage", description = "信用报告图片", nullable = true) String creditReportImage,
			@Parameter(name = "customer_no", description = "客户ID", nullable = true) String customer_no
	);

	@Permission
	@Action(version = FinVersion1.class, description = "注册企业资质")
	@Parameter(name = "enterpriseId", description = "企业信息ID")
	public String createEnterprise(EnterpriseBaseInfo enterpriseBaseInfo);
	
	@Permission
	@Action(version = FinVersion1.class, description = "注册企业资质认证")
	@Parameter(name = "authenticationId", description = "中间表ID")
	public String createEnterpriseQualification(
			@Parameter(name = "unitTypeId", description = "单位类型") String unitTypeId,
			@Parameter(name = "enterpriseId", description = "企业信息ID") Long enterpriseId,
			@Parameter(name = "scardType", description = "证件类型",nullable = true) String scardType,	
			@Parameter(name = "enterpriseName", description = "企业名称") String enterpriseName,
			@Parameter(name = "codeUSC", description = "社会统一信用代码", nullable = true) String codeUSC,
			@Parameter(name = "certificate", description = "组织机构代码", nullable = true) String certificate,
			@Parameter(name = "businessLicence", description = "营业执照", nullable = true) String businessLicence,
			@Parameter(name = "address", description = "营业执照所在地", nullable = true) String address,
			@Parameter(name = "contactAddress", description = "联系地址") String contactAddress,	
			@Parameter(name = "businessScope", description = "经营范围") String businessScope,	
			@Parameter(name = "registeredCapital", description = "注册资金") String registeredCapital,	
			@Parameter(name = "businessTimeLimit",description = "营业期限") String businessTimeLimit,		
			@Parameter(name = "enterpriseType", description = "企业类型") String enterpriseType,	
			@Parameter(name = "province", description = "企业所在省") String province,
			@Parameter(name = "city", description = "企业所在市") String city,
			@Parameter(name = "district", description = "企业所在区或县") String district,
			@Parameter(name = "businessType", description = "经营类型") String businessType,
			@Parameter(name = "belongsEnterpriseCode", description = "客户邀请码", nullable = true) String belongsEnterpriseCode,
			@Parameter(name = "proxySaleCode", description = "代销码", nullable = true) String proxySaleCode,
			@Parameter(name = "sUserType", description = "填写人身份") String sUserType,
			@Parameter(name = "legalPerson", description = "法定代表人") String legalPerson,
			@Parameter(name = "legalIdcard", description = "法人身份证号码") String legalIdcard,
			@Parameter(name = "legalPeriod", description = "法人证件有效期") String legalPeriod,
			@Parameter(name = "legalArea", description = "法人代表归属地") String legalArea,
			@Parameter(name = "procurator", description = "委托代理人 ",nullable = true) String procurator,
			@Parameter(name = "procuratorIdcard", description = "委托代理人身份证",nullable = true) String procuratorIdcard,
			@Parameter(name = "procuratorPeriod", description = "委托证件有效期",nullable = true) String procuratorPeriod,
			@Parameter(name = "creditCard", description = "企业对公银行账号") String creditCard,
			@Parameter(name = "accountHolder", description = "开户名") String accountHolder,
			@Parameter(name = "depositBank", description = "企业银行账号开户行名称，支持银行列表见") String depositBank,
			@Parameter(name = "subbranch", description = "企业银行账号开户行支行全称") String subbranch		
	);

	@Permission
	@Action(version = FinVersion1.class, description = "修改企业资质")
	public void updateEnterprise(EnterpriseBaseDetail enterpriseBaseDetail);
	
	@Permission
	@Action(version = FinVersion1.class, description = "提交企业资质")
	public void submitEnterprise(
			@Parameter(name = "enterpriseId", description = "企业信息ID", nullable = true) Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "平台提交企业资质")
	public void submitEnterprisePlatform(
			@Parameter(name = "enterpriseId", description = "企业信息ID") Long enterpriseId,
			@Parameter(name = "creditCard", description = "企业对公银行账号") String creditCard,
			@Parameter(name = "prcptcd", description = "大额行号", nullable = true) String prcptcd,
			@Parameter(name = "depositBank", description = "企业银行账号开户行名称，支持银行列表见") String depositBank,
			@Parameter(name = "subbranch", description = "企业银行账号开户行支行全称") String subbranch
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "提交企业资质认证")
	public void submitAuthentication(
			@Parameter(name = "authenticationId", description = "企业信息ID", nullable = true) Long authenticationId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "增补企业证照")
	public void supplementEnterpriseImage(
			@Parameter(name = "enterpriseId", description = "企业信息ID") Long enterpriseId,
			@Parameter(name = "businessLicenceImage", description = "营业执照图片") String businessLicenceImage,
			@Parameter(name = "certificateImage", description = "组织机构代码图片") String certificateImage,
			@Parameter(name = "legalPersonFrontImage", description = "法人代表正面照") String legalPersonFrontImage,
			@Parameter(name = "legalPersonBackImage", description = "法人代表反面照") String legalPersonBackImage,
			@Parameter(name = "qualificationsImage", description = "公司资质图片", nullable = true) String qualificationsImage,
			@Parameter(name = "creditReportImage", description = "信用报告图片", nullable = true) String creditReportImage
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业资质证件照")
	public void authenticationEnterpriseImage(
			@Parameter(name = "authenticationId", description = "企业信息ID") Long authenticationId,
			@Parameter(name = "businessLicenceImage", description = "营业执照图片") String businessLicenceImage,
			@Parameter(name = "certificateImage", description = "组织机构代码图片") String certificateImage,
			@Parameter(name = "legalPersonFrontImage", description = "法人代表正面照") String legalPersonFrontImage,
			@Parameter(name = "legalPersonBackImage", description = "法人代表反面照") String legalPersonBackImage,
			@Parameter(name = "qualificationsImage", description = "公司资质图片", nullable = true) String qualificationsImage,
			@Parameter(name = "creditReportImage", description = "信用报告图片", nullable = true) String creditReportImage
	);

	@Permission
	@Action(version = FinVersion1.class, description = "审核企业-通过")
	public void auditEnterpriseConsent(EnterpriseGradeEvaluation params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审核企业-保存等级信息")
	public void auditEnterpriseSave(EnterpriseGradeEvaluation params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改企业信息")
	public void updateEnterpriseInfo(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId,
			@Parameter(name = "officePhone", description = "办公电话", nullable = true) String officePhone,
			@Parameter(name = "fax", description = "传真", nullable = true) String fax,
			@Parameter(name = "eMail", description = "电子邮箱", nullable = true) String eMail,
			@Parameter(name = "depositBank", description = "开户行名称") String depositBank,
			@Parameter(name = "accountHolder", description = "开户名", maxLength = 32) String accountHolder,
			@Parameter(name = "creditCard", description = "银行卡号", maxLength = 32) String creditCard
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审核企业-拒绝")
	public void auditEnterpriseOppose(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId,
			@Parameter(name = "auditRemark", description = "审核备注", nullable = true) String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "冻结企业")
	public void freezeEnterprise(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "恢复企业")
	public void recoverEnterprise(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "冻结企业1")
	public void freezeEnterprise1(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "禁用企业")
	public void forbidEnterprise(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "启用企业")
	public void enableEnterprise(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询企业明细")
	public EnterpriseDetail inquireEnterpriseDetail(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询修改企业认证明细")
	public EnterpriseDetail queryEnterpriseModify(
			@Parameter(name = "authenticationId", description = "企业信息ID ") Long authenticationId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业账户管理")
	public EnterpriseDetail queryAccountManagement(
			@Parameter(name = "accountId", description = "企业账户ID ") Long accountId
	);
	
	@Permission
	@Action(version=FinVersion1.class,description = "企业修改认证审核")
	public void modifyCertificationAudit(
			@Parameter(name = "authenticationId", description = "企业信息ID ") Long authenticationId
	);
	
	@Permission
	@Action(version=FinVersion1.class,description = "认证审核")
	public void auditCertification(
			@Parameter(name = "authenticationId", description = "企业信息ID ") Long authenticationId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询当前帐号企业明细")
	public EnterpriseDetail inquireCurrentEnterpriseDetail();
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业信息")
	public PageList<EnterpriseBaseDetail> inquireEnterprisePageList(
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态 1:未审核/2:审核通过/3:审核拒绝", nullable = true) Integer auditState,
			@Parameter(name = "mobile", description = "手机号码", nullable = true) String mobile,
			@Parameter(name = "legalPerson", description = "法人名字", nullable = true) String legalPerson,
			@Parameter(name = "state", description = "状态 0:未知/1:有效/2:禁用 ", nullable = true) Integer state,
			@Parameter(name = "createDateTimeBegin", description = "注册时间" , nullable = true) String createDateTimeBegin,
			@Parameter(name = "createDateTimeEnd", description = "注册时间"  ,nullable = true) String createDateTimeEnd,
			@Parameter(name = "enterpriseType", description = "企业类型", nullable = true) Integer enterpriseType,
			@Parameter(name = "isPassed", description = "是否已通过", nullable = true) Boolean isPassed,
			@Parameter(name = "followPerson", description = "跟进人", nullable = true) String followPerson,
			@Parameter(name = "productType", description = "业务类型", nullable = true) Integer productType,
			@Parameter(name = "alreadyCreditStart", description = "已用额度-起始", nullable = true) BigDecimal alreadyCreditStart,
			@Parameter(name = "alreadyCreditEnd", description = "已用额度-截止", nullable = true) BigDecimal alreadyCreditEnd,
			@Parameter(name = "leftTime", description = "剩余时间", nullable = true) Integer leftTime,
			@Parameter(name = "finalState", description = "剩余时间", nullable = true) Long finalState,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询银行行号")
	public PageList<EnterpriseBaseDetail> queryBankCode(
			@Parameter(name = "dotName", description = "网点名称 ") String dotName,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
		);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业信息")
	public PageList<EnterpriseBaseDetail> queryEnterpriseModifyPageList(
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态 1:未审核/2:审核通过/3:审核拒绝", nullable = true) Integer auditState,
//			@Parameter(name = "mobile", description = "手机号码", nullable = true) String mobile,
			@Parameter(name = "legalPerson", description = "法人名字", nullable = true) String legalPerson,
			@Parameter(name = "state", description = "状态 0:未知/1:有效/2:禁用 ", nullable = true) Integer state,
			@Parameter(name = "createDateTimeBegin", description = "注册时间" , nullable = true) String createDateTimeBegin,
			@Parameter(name = "createDateTimeEnd", description = "注册时间"  ,nullable = true) String createDateTimeEnd,
			@Parameter(name = "enterpriseType", description = "企业类型", nullable = true) Integer enterpriseType,
			@Parameter(name = "isPassed", description = "是否已通过", nullable = true) Boolean isPassed,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业账户信息")
	public PageList<EnterpriseBaseDetail> queryAccountManagesPageList(
			@Parameter(name = "accountHolder", description = "开户名", nullable = true) String accountHolder,
			@Parameter(name = "depositBank", description = "开户行名称", nullable = true) String depositBank,
			@Parameter(name = "createDateTimeBegin", description = "注册时间" , nullable = true) String createDateTimeBegin,
			@Parameter(name = "createDateTimeEnd", description = "注册时间"  ,nullable = true) String createDateTimeEnd,
			@Parameter(name = "subbranch", description = "银行支行", nullable = true) String subbranch,
			@Parameter(name = "creditCard", description = "银行卡号", nullable = true) String creditCard,
			@Parameter(name = "defaultAccount", description = "是否是默认账户", nullable = true)Integer defaultAccount,
			@Parameter(name = "enterpriseId", description = "企业信息Id", nullable = true)Long enterpriseId,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "置顶账户")
	public void topAccountInfo(
			@Parameter(name = "accountId", description = "账户信息ID") Long accountId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "取消置顶账户")
	public void cancelTopAccountInfo(
			@Parameter(name = "accountId", description = "账户信息ID") Long accountId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "客户端查询当前修改记录信息")
	public PageList<EnterpriseBaseDetail> queryEnterpriseModifyPageLists(
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态 1:未审核/2:审核通过/3:审核拒绝", nullable = true) Integer auditState,
			@Parameter(name = "legalPerson", description = "法人名字", nullable = true) String legalPerson,
			@Parameter(name = "enterpriseId", description = "企业信息ID", nullable = true) Long enterpriseId,
			@Parameter(name = "createDateTimeBegin", description = "注册时间" , nullable = true) String createDateTimeBegin,
			@Parameter(name = "createDateTimeEnd", description = "注册时间"  ,nullable = true) String createDateTimeEnd,
			@Parameter(name = "enterpriseType", description = "企业类型", nullable = true) Integer enterpriseType,
			@Parameter(name = "isPassed", description = "是否已通过", nullable = true) Boolean isPassed,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业信息")
	public PageList<EnterpriseDetail> inquireFollowEnterprisePageList(
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询所属企业信息")
	public PageList<EnterpriseBaseDetail> inquireOwnEnterprisePageList(
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态 1:未审核/2:审核通过/3:审核拒绝", nullable = true) Integer auditState,
			@Parameter(name = "mobile", description = "手机号码", nullable = true) String mobile,
			@Parameter(name = "legalPerson", description = "法人名字", nullable = true) String legalPerson,
			@Parameter(name = "state", description = "状态 0:未知/1:有效/2:禁用 ", nullable = true) Integer state,
			@Parameter(name = "createDateTimeBegin", description = "注册时间" , nullable = true) String createDateTimeBegin,
			@Parameter(name = "createDateTimeEnd", description = "注册时间"  ,nullable = true) String createDateTimeEnd,
			@Parameter(name = "enterpriseType", description = "企业类型", nullable = true) Integer enterpriseType,
			@Parameter(name = "enterpriseId", description = "所属企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "tradeType", description = "交易类型 1-尚未合作的客户 2-已合作的客户 3-曾经合作的户口", nullable = true) Integer tradeType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Action(version = FinVersion1.class, description = "初始化生成企业邀请码")
	public void initEnterpriseCode();
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业信息列表")
	public PageList<EnterpriseInfo> inquireEnterpriseListForSelector(
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态 1:未审核/2:审核通过/3:审核拒绝", nullable = true) Integer auditState,
			@Parameter(name = "state", description = "状态 0:未知/1:有效/2:禁用 ", nullable = true) Integer state,
			@Parameter(name = "p", description = "页数") Integer p,
			@Parameter(name = "s", description = "每页条数") Integer s
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业信息列表")
	public List<EnterpriseInfo> inquireEnterpriseList(
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除企业信息")
	public void disableEnterprise(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改企业简称")
	public void updateEnterpriseShortName(
			@Parameter(name = "enterpriseId", description = "企业信息ID ") Long enterpriseId,
			@Parameter(name = "enterpriseShortName", description = "企业简称") String enterpriseShortName
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业多级审核-保存")
	public void saveEnterpriseAudit(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit,
			@Parameter(name = "approvalBooks", description = "批复书", nullable = true) String approvalBooks
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业多级审核-提交")
	public void submitEnterpriseAudit(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit,
			@Parameter(name = "approvalBooks", description = "批复书", nullable = true) String approvalBooks
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "转化为企业信息")
	public void transferToEnterprise(
			@Parameter(name = "enterpriseName", description = "企业名", nullable = true) String enterpriseName,
			@Parameter(name = "address", description = "地址", nullable = true) String address,
			@Parameter(name = "name", description = "姓名") String name,
			@Parameter(name = "mobile", description = "手机号") String mobile,
			@Parameter(name = "accountName", description = "账号名") String accountName,
			@Parameter(name = "is_inside", description = "是否内部账号 0:内部账号 1:外部账号") String is_inside
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "同步信息到CRM")
	public void synchronousToCrm(
			@Parameter(name = "address", description = "地址", nullable = true) String address,
			@Parameter(name = "name", description = "姓名") String name,
			@Parameter(name = "mobile", description = "手机号") String mobile,
			@Parameter(name = "accountName", description = "账号名") String accountName,
			@Parameter(name = "is_inside", description = "是否内部账号 0:内部账号 1:外部账号") String is_inside
	);
	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "调整企业等级")
	@Parameter(name = "gradeEvaluationId", description = "会员评估等级ID")
	public String adjustEnterpriseGrade(EnterpriseGradeEvaluation params);

	@Permission
	@Action(version = FinVersion1.class, description = "企业等级评估明细")
	public EnterpriseGradeEvaluationDetail inquireEnterpriseGradeEvaluationDetail(
			@Parameter(name = "gradeEvaluationId", description = "会员评估等级ID") Long gradeEvaluationId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询是否存在待审核的等级调整")
	@Parameter(name = "isExist", description = "会员评估等级ID")
	public Boolean inquireExistEnterpriseGradeEvaluation(
			@Parameter(name = "enterpriseId", description = "会员评估等级ID") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业等级调整列表")
	public PageList<EnterpriseGradeEvaluationDetail> inquireEnterpriseGradeEvaluation(
			@Parameter(name = "enterpriseId", description = "企业信息ID", nullable=true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态", nullable = true) Integer auditState,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业等级评估多级审核-同意")
	public void consentEnterpriseGradeEvaluation(
			@Parameter(name = "gradeEvaluationId", description = "会员评估等级ID") Long gradeEvaluationId,
			@Parameter(name = "auditRemark", description = "审核意见", nullable = true) String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业等级评估审核-拒绝")
	public void opposeEnterpriseGradeEvaluation(
			@Parameter(name = "gradeEvaluationId", description = "会员评估等级ID") Long gradeEvaluationId,
			@Parameter(name = "auditRemark", description = "审核意见", nullable = true) String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业等级多级审核-保存")
	public void saveEnterpriseGradeAudit(
			@Parameter(name = "gradeEvaluationId", description = "会员评估等级ID") Long gradeEvaluationId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit,
			@Parameter(name = "approvalBooks", description = "批复书", nullable = true) String approvalBooks
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业等级多级审核-提交")
	public void submitEnterpriseGradeAudit(
			@Parameter(name = "gradeEvaluationId", description = "会员评估等级ID") Long gradeEvaluationId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit,
			@Parameter(name = "approvalBooks", description = "批复书", nullable = true) String approvalBooks
	);
	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "调整临时额度")
	@Parameter(name = "temporaryCreditlineEvaluationId", description = "临时额度评估等级ID")
	public String adjustTemporaryCreditLine(TemporaryCreditlineEvaluation params);

	@Permission
	@Action(version = FinVersion1.class, description = "临时额度评估明细")
	public TemporaryCreditlineEvaluationDetail inquireTemporaryCreditlineEvaluationDetail(
			@Parameter(name = "temporaryCreditlineEvaluationId", description = "临时额度评估等级ID") Long temporaryCreditlineEvaluationId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "临时额度调整列表")
	public PageList<TemporaryCreditlineEvaluationDetail> inquireTemporaryCreditlineEvaluationPageList(
//			@Parameter(name = "enterpriseId", description = "企业信息ID", nullable=true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "auditState", description = "审核状态", nullable = true) Integer auditState,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "临时额度评估多级审核-同意")
	public void consentTemporaryCreditlineEvaluation(
			@Parameter(name = "temporaryCreditlineEvaluationId", description = "临时额度评估等级ID") Long temporaryCreditlineEvaluationId,
			@Parameter(name = "auditRemark", description = "审核意见", nullable = true) String auditRemark
	);
	
	@Permission
	@Action(version=FinVersion1.class, description="同步供应商信息到仓储系统")
	public void syncSupplierInfo(
			@Parameter(name="supplierId", description="供应商ID") Long supplierId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "临时额度评估审核-拒绝")
	public void opposeTemporaryCreditlineEvaluation(
			@Parameter(name = "temporaryCreditlineEvaluationId", description = "临时额度评估等级ID") Long temporaryCreditlineEvaluationId,
			@Parameter(name = "auditRemark", description = "审核意见", nullable = true) String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "临时额度多级审核-保存")
	public void saveTemporaryCreditlineEvaluation(
			@Parameter(name = "temporaryCreditlineEvaluationId", description = "临时额度评估等级ID") Long temporaryCreditlineEvaluationId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit,
			@Parameter(name = "approvalBooks", description = "批复书", nullable = true) String approvalBooks
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "临时额度多级审核-提交")
	public void submitTemporaryCreditlineEvaluation(
			@Parameter(name = "temporaryCreditlineEvaluationId", description = "临时额度评估等级ID") Long temporaryCreditlineEvaluationId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit,
			@Parameter(name = "approvalBooks", description = "批复书", nullable = true) String approvalBooks
	);
	//=================================================================================================
	@Permission
	@Action(version = FinVersion1.class, description = "新增跟进人")
	public String createFinanceFollowPerson(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "employeeId", description = "跟进人ID") Long employeeId,
			@Parameter(name = "clientNumber", description = "客户编号") String clientNumber,
			@Parameter(name = "dateStart", description = "时间起") Date dateStart,
			@Parameter(name = "dateEnd", description = "时间止") Date dateEnd
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "启停跟进人")
	public void startAndStopFinanceFollowPerson(
			@Parameter(name = "followId", description = "跟进人ID") Long followId,
			@Parameter(name = "reason", description = "启停原因") String reason,
			@Parameter(name = "remark", description = "启停说明", nullable = true) String remark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业跟进人详情")
	public FinanceFollowPersonDetail inquireFinanceFollowPersonDetail(
			@Parameter(name = "followId", description = "跟进人ID") Long followId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业跟进人列表")
	public List<FinanceFollowPersonDetail> inquireFinanceFollowPersonList(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业跟进人列表")
	public PageList<FinanceFollowPersonDetail> inquireFinanceFollowPersonPageList(
			@Parameter(name = "followName", description = "跟进人", nullable = true) String followName,
			@Parameter(name = "clientName", description = "企业名称", nullable = true) String clientName,
			@Parameter(name = "dateStart", description = "起始时间", nullable = true)Date dateStart,
			@Parameter(name = "dateEnd", description = "终止时间", nullable = true)Date dateEnd,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "新增跟进信息")
	public String createFinanceFollowInfo(
			@Parameter(name = "followId", description = "跟进人ID") Long followId,
			@Parameter(name = "followType", description = "跟进类型") String followType,
			@Parameter(name = "date", description = "时间") Date date,
			@Parameter(name = "signLocation", description = "签到位置") String signLocation,
			@Parameter(name = "visitRemark", description = "拜访说明", nullable = true) String visitRemark,
			@Parameter(name = "visitFile", description = "拜访文件", nullable = true) String visitFile,
			@Parameter(name = "visitImage", description = "拜访图片", nullable = true) String visitImage,
			@Parameter(name = "visitAudio", description = "拜访音频", nullable = true) String visitAudio
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除跟进信息")
	public void deleteFinanceFollowInfo(
			@Parameter(name = "followInfoId", description = "跟进人ID") Long followInfoId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "提交跟进信息")
	public void submitFinanceFollowInfo(
			@Parameter(name = "followInfoId", description = "跟进人ID") Long followInfoId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除质押率")
	public void deleteFinanceBulkstockPledgeRate(
			@Parameter(name = "pledgeRateId", description = "质押率ID") Long pledgeRateId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询质押率详情")
	public FinanceBulkstockPledgeRateDetail inquireFinanceBulkstockPledgeRate(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "bulkstockInfoId", description = "大宗商品ID") Long bulkstockInfoId,
			@Parameter(name = "productType", description = "产品类型") Integer productType
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询是否有该货物的融资权限")
	@Parameter(name = "isExist", description = "是否有权限融资该货品")
	public Boolean existBulkstockPledgeRate(
			@Parameter(name = "bulkstockInfoId", description = "大宗商品ID") Long bulkstockInfoId,
			@Parameter(name = "productType", description = "产品类型") Integer productType,
			@Parameter(name = "pledgeRate", description = "质押率", nullable = true) BigDecimal pledgeRate,
			@Parameter(name = "loanRate", description = "融资利率", nullable = true) BigDecimal loanRate,
			@Parameter(name = "enterpriseId", description = "企业ID", nullable = true) Long enterpriseId
	);
	
//	@Permission
	@Action(version = FinVersion1.class, description = "根据企业 id 精确获取企业工商详细信息")
	public BusinessInfoDetailResult inquireEnterpriseBusinessInfoById(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 返回法院判决列表")
	public EnterpriseLawsuitInfoDetailResult inquireEnterpriseLawsuitInfo(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 返回法院公告信息")
	public EnterpriseNoticeDetailResult inquireEnterpriseNotice(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 获取被执行人信息")
	public ExecutedPersonDetailResult inquireExecutedPerson(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "按企业 id 返回失信人信息")
	public ExecutionDetailResult inquireExecution(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "按企业 id 返回司法拍卖信息")
	public AuctionDetailResult inquireAuction(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 获取经营异常信息")
	public AbnormalDetailResult inquireAbnormalList(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 获取欠税信息")
	public OverDueTaxDetailResult inquireOverDueTax(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 获取股权出质列表")
	public EquityQualitiesDetailResult inquireEquityQualities(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 获取动产抵押列表")
	public MortgagesDetailResult inquireMortgages(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	@Action(version = FinVersion1.class, description = "根据企业 id 获取开庭公告信息")
	public CourtNoticeDetailResult inquireCourtNotice(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId,
			@Parameter(name = "skip", description = "跳过条目数（默认为0）", nullable = true) Integer skip
	);
	
	//-----------------------------------------------------------------------------------------------------
	@Permission
	@Action(version = FinVersion1.class, description = "新增佣金分配比例信息")
	public String createCommissionScaleTable(
			@Parameter(name = "enterpriseId", description = "企业信息ID") Long enterpriseId,
			@Parameter(name = "name", description = "名称") String name,
			@Parameter(name = "personType", description = "关联人类型") String personType,
			@Parameter(name = "fileUuids", description = "附件") String fileUuids,
			@Parameter(name = "rate", description = "比例") BigDecimal rate,
			@Parameter(name = "type", description = "类型", nullable = true) Integer type,
			@Parameter(name = "accountId", description = "账户ID") Long accountId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改佣金分配比例信息")
	public void updateCommissionScaleTable(
			@Parameter(name = "scaleId", description = "分配ID") Long scaleId,
			@Parameter(name = "name", description = "名称") String name,
			@Parameter(name = "personType", description = "关联人类型") String personType,
			@Parameter(name = "fileUuids", description = "附件") String fileUuids,
			@Parameter(name = "rate", description = "比例") BigDecimal rate,
			@Parameter(name = "type", description = "类型", nullable = true) Integer type,
			@Parameter(name = "accountId", description = "账户ID") Long accountId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询佣金分配比例信息列表")
	public List<CommissionScaleTable> inquireCommissionScaleTableList(
			@Parameter(name = "enterpriseId", description = "企业信息ID") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "启用/停用佣金分配比例信息")
	public void enableCommissionScaleTable(
			@Parameter(name = "scaleId", description = "分配ID") Long scaleId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除佣金分配比例信息")
	public void deleteCommissionScaleTable(
			@Parameter(name = "scaleId", description = "分配ID") Long scaleId
	);
	
	@Action(version = FinVersion1.class, description = "查询CRM系统中的关联人信息")
	public List<AssociatedPerson> inquireAssociatedPersonList(
			@Parameter(name = "enterpriseId", description = "企业ID") Long enterpriseId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "新增供应商")
	public String createSupplierInfo(SupplierInfo supplier);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改供应商")
	public void updateSupplierInfo(SupplierInfo supplier);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除供应商")
	public void deleteSupplierInfo(
			@Parameter(name = "supplierId", description = "供应商ID") Long supplierId
		);
	
	@Permission
	@Action(version = FinVersion1.class, description = "禁用供应商")
	public void disableSupplierInfo(
			@Parameter(name = "supplierId", description = "供应商ID") Long supplierId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "启用供应商")
	public void enableSupplierInfo(
			@Parameter(name = "supplierId", description = "供应商ID") Long supplierId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询供应商详情")
	public SupplierInfo inquireSupplierInfoDetail(
			@Parameter(name = "supplierId", description = "供应商ID") Long supplierId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询供应商列表")
	public List<SupplierInfo> inquireSupplierInfoList();
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询供应商列表")
	public PageList<SupplierInfo> inquireSupplierInfoPageList(
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	//-------------------------------------------------------------------------------------------------------------------
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业地址列表")
	public List<EnterpriseAddressInfo> inquireEnterpriseAddressList();
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业地址列表")
	public List<EnterpriseAddressInfo> inquireEnterpriseAddressPageList(
			@Parameter(name = "page", description = "分页参数") PageCriteria page
			);
	
	@Permission
	@Action(version = FinVersion1.class, description = "新增企业地址")
	public void createAddressInfo(EnterpriseAddressInfo enterpriseAddressInfo);
	
	@Permission
	@Action(version = FinVersion1.class, description = "更新企业地址")
	public void updateAddressInfo(EnterpriseAddressInfo enterpriseAddressInfo);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询企业地址详情")
	public EnterpriseAddressInfo inquireAddressInfoDetail(
			@Parameter(name = "addressID", description = "地址ID") Long addressID
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除企业地址")
	public void deleteAddressInfo(
			@Parameter(name = "addressID", description = "地址ID") Long addressID
			);
	
}
